<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta content="width=device-width, initial-scale=1.0" name="viewport">
  <meta content="smart-doc" name="generator">
  <%if(isNotEmpty(projectName)){%><title>${projectName}</title><%}else{%><title>API Reference</title><%}%>
  <link href="font.css?v=${version}" rel="stylesheet">
  <link href="AllInOne.css?v=${version}" rel="stylesheet"/>
  <script src="jquery.min.js"></script>
</head>
<body class="book toc2 toc-left">
<div id="header"><%if(isNotEmpty(projectName)){%><h1>${projectName}</h1><%}%>
  <div class="toc2" id="toc">
    <div id="book-search-input"><input id="search" placeholder="Type to search" type="text"></div>
    <div id="toctitle"><span>API Reference</span></div>
    <ul class="sectlevel1" id="accordion"><%for(api in webSocketDocList){%>
      <li class="open"><a class="dd" href="#_${api.order}_${htmlEscape(api.desc)}">${api.order}.&nbsp;${htmlEscape(api.desc)}</a>
      </li>
      <%}%><%if(isNotEmpty(errorCodeList)){%>
      <li><a
          href="#_${webSocketDocList.~size+1}_${errorListTitle}">${webSocketDocList.~size+1}.&nbsp;${errorListTitle}</a>
      </li>
      <%}%><%if(isNotEmpty(dictList)){%>
      <li><a class="dd" href="#_${webSocketDocList.~size+2}_${dictListTitle}">${webSocketDocList.~size+2}.&nbsp;${dictListTitle}</a>
        <ul class="sectlevel2"><%for(dict in dictList){%>
          <li><a href="#_${webSocketDocList.~size+2}_${dict.order}_${dict.title}">${webSocketDocList.~size+2}.${dict.order}.&nbsp;${htmlEscape(dict.title)}</a>
          </li>
          <%}%>
        </ul>
      </li>
      <%}%>
    </ul>
  </div>
</div>
<div id="content"><%if(isNotEmpty(revisionLogList)){%>
  <div id="preamble">
    <div class="sectionbody">
      <table class="tableblock frame-all grid-all spread">
        <colgroup>
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
        </colgroup>
        <thead>
        <tr>
          <th class="tableblock halign-left valign-top">Version</th>
          <th class="tableblock halign-left valign-top">Update Time</th>
          <th class="tableblock halign-left valign-top">Status</th>
          <th class="tableblock halign-left valign-top">Author</th>
          <th class="tableblock halign-left valign-top">Description</th>
        </tr>
        </thead>
        <tbody><%for(revisionLog in revisionLogList){%>
        <tr>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.version}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.revisionTime}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.status}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.author}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${revisionLog.remarks}</p></td>
        </tr>
        <%}%>
        </tbody>
      </table>
    </div>
  </div>
  <%}%><%for(api in webSocketDocList){%>
  <div class="sect1"><h2 id="_${api.order}_${htmlEscape(api.desc)}"><a class="anchor"
                                                                       href="#_${api.order}_${htmlEscape(api.desc)}"></a><a
      class="link" href="#_${api.order}_${htmlEscape(api.desc)}">${api.order}.&nbsp;${htmlEscape(api.desc)}</a></h2>
    <div class="sectionbody">
      <div class="paragraph"><p><strong>URI:</strong>&nbsp;${api.uri}</p></div>
      <div class="paragraph"><p><strong>Author:</strong>&nbsp;${api.author}</p></div>
      <div class="paragraph"><p><strong>Description:</strong>&nbsp;${api.desc}</p></div>
      <div class="paragraph"><p><strong>SubProtocols:</strong>&nbsp;${api.subProtocols}</p></div>
      <%if(isNotEmpty(api.pathParams)){%>
      <div class="paragraph"><p><strong>Path-parameters:</strong></p></div>
      <table class="tableblock frame-all grid-all spread">
        <colgroup>
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
        </colgroup>
        <thead>
        <tr>
          <th class="tableblock halign-left valign-top">Parameter</th>
          <th class="tableblock halign-left valign-top">Type</th>
          <th class="tableblock halign-left valign-top">Description</th>
          <th class="tableblock halign-left valign-top">Required</th>
          <th class="tableblock halign-left valign-top">Since</th>
        </tr>
        </thead>
        <tbody><%for(param in api.pathParams){%>
        <tr>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(param.type)}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.required}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.version}</p></td>
        </tr>
        <%}%>
        </tbody>
      </table>
      <%}%><%if(isNotEmpty(api.messageParams)){%>
      <div class="paragraph"><p><strong>Message-parameters:</strong></p></div>
      <table class="tableblock frame-all grid-all spread">
        <colgroup>
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
        </colgroup>
        <thead>
        <tr>
          <th class="tableblock halign-left valign-top">Parameter</th>
          <th class="tableblock halign-left valign-top">Type</th>
          <th class="tableblock halign-left valign-top">Description</th>
          <th class="tableblock halign-left valign-top">Required</th>
          <th class="tableblock halign-left valign-top">Since</th>
        </tr>
        </thead>
        <tbody><%for(param in api.messageParams){%>
        <tr>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.field}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(param.type)}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.desc}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.required}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${param.version}</p></td>
        </tr>
        <%}%>
        </tbody>
      </table>
      <%}%><%if(isNotEmpty(api.responseParams)){%><%for(param in api.responseParams){%>
      <div class="paragraph"><p><strong>Response-parameters:</strong></p></div>
      <table class="tableblock frame-all grid-all spread">
        <colgroup>
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
          <col style="width: 20%;">
        </colgroup>
        <thead>
        <tr>
          <th class="tableblock halign-left valign-top">Parameter</th>
          <th class="tableblock halign-left valign-top">Type</th>
          <th class="tableblock halign-left valign-top">Description</th>
          <th class="tableblock halign-left valign-top">Since</th>
        </tr>
        </thead>
        <tbody><%for(paramItem in param){%>
        <tr>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${paramItem.field}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${htmlEscape(paramItem.type)}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${paramItem.desc}</p></td>
          <td class="tableblock halign-left valign-top"><p class="tableblock">${paramItem.version}</p></td>
        </tr>
        <%}%>
        </tbody>
      </table>
      <%}%><%}%><%}%><%if(isNotEmpty(errorCodeList)){%>
      <div class="sect1"><h2 id="#_${webSocketDocList.~size+1}_${errorListTitle}"><a class="anchor"
                                                                                     href="#_${webSocketDocList.~size+1}_${errorListTitle}"></a><a
          class="link" href="#_${webSocketDocList.~size+1}_${errorListTitle}">${webSocketDocList.~size+1}.&nbsp;${errorListTitle}</a>
      </h2>
        <div class="sectionbody">
          <table class="tableblock frame-all grid-all spread">
            <colgroup>
              <col style="width: 50%;">
              <col style="width: 50%;">
            </colgroup>
            <thead>
            <tr>
              <th class="tableblock halign-left valign-top">Error code</th>
              <th class="tableblock halign-left valign-top">Description</th>
            </tr>
            </thead>
            <tbody><%for(error in errorCodeList){%>
            <tr>
              <td class="tableblock halign-left valign-top"><p class="tableblock">${error.value}</p></td>
              <td class="tableblock halign-left valign-top"><p class="tableblock"> ${htmlEscape(error.desc)}</p></td>
            </tr>
            <%}%>
            </tbody>
          </table>
        </div>
      </div>
      <%}%><%if(isNotEmpty(dictList)){%>
      <div class="sect1"><h2 id="_${dictListTitle}"><a class="anchor" href="#_${dictListTitle}"></a><a class="link"
                                                                                                       href="#_${dictListTitle}">${webSocketDocList.~size+2}.&nbsp;${dictListTitle}</a>
      </h2>
        <div class="sectionbody"><%for(dict in dictList){%>
          <div class="sect2"><h3 id="_${webSocketDocList.~size+2}_${dict.order}_${dict.title}"><a class="anchor"
                                                                                                  href="#_${webSocketDocList.~size+2}_${dict.order}_${dict.title}"></a><a
              class="link" href="#_${webSocketDocList.~size+2}_${dict.order}_${dict.title}">${webSocketDocList.~size+2}.${dict.order}.&nbsp;${htmlEscape(dict.title)}</a>
          </h3>
            <table class="tableblock frame-all grid-all spread">
              <colgroup>
                <col style="width: 25%;">
                <col style="width: 25%;">
                <col style="width: 25%;">
                <col style="width: 25%;">
              </colgroup>
              <thead>
              <tr>
                <th class="tableblock halign-left valign-top">Name</th>
                <th class="tableblock halign-left valign-top">Code</th>
                <th class="tableblock halign-left valign-top">Type</th>
                <th class="tableblock halign-left valign-top">Description</th>
              </tr>
              </thead>
              <tbody><%for(dataDict in dict.dataDictList){%>
              <tr>
                <td class="tableblock halign-left valign-top"><p class="tableblock">${dataDict.name}</p></td>
                <td class="tableblock halign-left valign-top"><p class="tableblock"> ${dataDict.value}</p></td>
                <td class="tableblock halign-left valign-top"><p class="tableblock">${dataDict.type}</p></td>
                <td class="tableblock halign-left valign-top"><p class="tableblock"> ${htmlEscape(dataDict.desc)}</p>
                </td>
              </tr>
              <%}%>
              </tbody>
            </table>
          </div>
          <%}%>
        </div>
      </div>
      <%}%>
      <footer class="page-footer"><span class="copyright">Generated by smart-doc at ${createTime}</span><span
          class="footer-modification">Suggestions,contact,support and error reporting on<a
          href="https://gitee.com/smart-doc-team/smart-doc" target="_blank">&nbsp;Gitee</a>&nbsp;or<a
          href="https://github.com/smart-doc-group/smart-doc.git" target="_blank">&nbsp;Github</a></span></footer>
      <div href="javascript:void(0)" id="toTop"><img id="upArrow"
                                                     src="">
        <spanid
        ="upText">Top</span></div>
    </div>
    <script src="search.js?v=${version}"></script>
    <script>$(function () {
      const Accordion = function (el, multiple) {
        this.el = el || {};
        this.multiple = multiple || false;
        const links = this.el.find(".dd");
        links.on("click", {el: this.el, multiple: this.multiple}, this.dropdown)
      };
      Accordion.prototype.dropdown = function (e) {
        const $el = e.data.el;
        $this = $(this), $next = $this.next();
        $next.slideToggle();
        $this.parent().toggleClass("open");
        if (!e.data.multiple) {
          $el.find(".submenu").not($next).slideUp("20").parent().removeClass("open")
        }
      };
      new Accordion($("#accordion"), false);
      $(window).scroll(function () {
        if ($(window).scrollTop() > 100) {
          $("#toTop").fadeIn(1500);
          $("#toTop").hover(function () {
            $("#upArrow").hide();
            $("#upText").show()
          }, function () {
            $("#upArrow").show();
            $("#upText").hide()
          })
        } else {
          $("#toTop").fadeOut(1500)
        }
      });
      $("#toTop").click(function () {
        $("body, html").animate({scrollTop: 0}, 1000);
        return false
      })
    });</script>
</body>
</html>